package cn.qh.com.util;



import org.apache.commons.lang.StringUtils;

import java.util.Map;

/**
 * @Description: 用户的每个请求对应一个线程 每个线程都有自己的Map,每个线程维护在即的Map中的数据
 *  Map中保存的当前线程的上下文的数据。当前上下文中存储的是登录用户的帐号
 * @author: 王跃
 * @date: 2021年11月14日 17:30
 */
public class UserContextHolder {

    private static UserContextHolder userContextHolder=new UserContextHolder();

    private ThreadLocal<Map<String, String>> threadLocal;

    private UserContextHolder() {
        this.threadLocal = new ThreadLocal<>();
    }

    public static UserContextHolder getInstance() {
        return userContextHolder;
    }

    /**
     * 保存用户上下文信息
     */
    public void setContext(Map<String, String> map) {
        threadLocal.set(map);
    }

    /**
     *  获取用户上下文中的信息
     */
    public Map<String, String> getContext() {
        return threadLocal.get();
    }


    /**
     * 获取用户的名字
     */
    public String getUsername(String item) {
        Map<String,String> map= getContext();

        if(map!=null && map.size()!=0){
           return map.get(item);
        }
        return StringUtils.EMPTY;
    }


    /**
     * 清空上下文
     */
    public void clear() {
        threadLocal.remove();
    }

}
